package com.tedu.api.date;

import org.junit.Test;

import java.util.Calendar;
import java.util.Date;

/**
 * java.util包
 * Calendar抽象类替换Date(设计缺陷)   使用格里高利历法：公历
 * 替换方法：
 * 1.时间计算分量：根据毫秒数换算时间分量：年,月,日:时分秒
 * 2.设计时间分量：修改年,月,日:时分秒 底层用毫秒计算结果
 * 3.增加|减少时间分量：增加|减少指定毫秒数；
 */
public class CalendarAPI {
    public static void main(String[] args) {
        //抽象类---匿名内部类【提供静态方法替代new,这个静态方法封装new功能】
        //getInstance 获取一个实例--封装了new的功能
        Calendar cl = Calendar.getInstance();
        //获取年月日   get方法：获取年月日 时分秒、
        int year = cl.get(Calendar.YEAR); //get方法中可以传入 静态属性
        System.out.println("当前年份" + year);
        int n = cl.get(Calendar.MONTH) + 1;
        System.out.println("当前月" + n);
        int s = cl.get(Calendar.DATE);
        System.out.println("当前日" + s);
        int p = cl.get(Calendar.DECEMBER);
        System.out.println("当前时" + p);
        int m = cl.get(Calendar.MINUTE);
        System.out.println("当前分" + m);
//快速格式化代码的快捷键 ctrl+alt+l

        //设置时间分量：set(修改时间 绝对时间)方法 底层使用毫秒数
        //需求：当前时间调整为明年的今天
        cl.set(Calendar.YEAR,2025);
        Date d=cl.getTime();//获取时间，返回值Date            类
        System.out.println("明年的今天"+d);
        //需求：获取2023年的今天【通过第三个增加减少时间毫秒数计算】
        //set方法(改变时间，相对时间)
        cl.add(Calendar.YEAR,-1);
        Date v=cl.getTime();//获取时间，返回值Date类
        System.out.println("去年的今天"+v);

//获取当前月份总天数【最大天数】
        int max=cl.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("月份最大天数："+max);
    }
}
